Hotel Cancellation
Prediction
연제호, 오승재, 정다영, 추영은
SUMMARY
프로젝트명 호텔 취소 예측 기간 2020.03 - 2020.04
인원 기여도 4
프로젝트
주요 내용
머신러닝을
활용하여 호텔 취소율을 예측하고 취소율을 낮추기 위한 대안 제시
얻은 사항
도메인
습득, 도메인에 맞는 머신러닝 모형 구축, 프로젝트 경험 코딩 능력 향상
시작하기 전에
질문
취소를 예측해야 할까?
배울 점은 무엇? 성과 무엇?
데이터 소개
Hotel booking demand
(https://www.kaggle.com/jessemostipak/hotel-booking-demand)
데이터에 대한 설명
호텔에 대한 설명
리조트호텔, 시티호텔
변수 설명
변수 32
목차
01.
02.
03.
어떤 머신러닝 모델이 가장 예측할 인가?
호텔 취소에 영향을 미치는 요소는 무엇인가?
호텔 취소 대안을 도출하자!
01
어떤 머신러닝 모델이
가장 예측할 것인가?
데이터 분석 단계
데이터 준비
전처리
데이터 가공
EDA
머신러닝
기법 적용
예측 검증
결측치 처리
이상치 처리
새로운 변수 추가
분류 분석
주요 변수 도출
하이퍼 파라미터
ROC Curve
F1 Score
Confusion
Matrix
기술 통계
시각화
상관 분석
데이터 전처리
데이터 준비하기
결측치는 어떻게 처리하지?
Company 결측치 비중이 94.3% 해당 변수 제외
Country 결측치 ‘None’ 으로 채우기
Agent, Children 결측치 4개를 0으로 대체
1
2
데이터를 활용할 있게 새로운 변수를 도출하자!
arrival_date : 연월일을 합친 컬럼
arrival_day_of_week : 요일 컬럼
EDA
데이터 살펴보기
호텔은 위치가 다른 만큼 취소 사유가 다르지 않을까?
리조트 호텔과 시티 호텔로 나누어 살펴보기
hotel, canceled 변수를 제외하고도 32개의 많은 변수를 어떻게 살펴볼까?
비슷한 성격의 변수끼리 묶어 살펴보기
자기 상관성을 가진 변수?
범주형과 수치형으로 나누어 상관 분석하기
변수 살펴보기
변수명 변수 설명
adults 성인의
children 어린이의
babies 아기의
meal
예약 식사 유형,
Undefined/SC : 식사 패키지 없음
BB : 침대&아침 식사
HB : 하프 보드 (아침 식사와 다른 식사 보통 저녁)
FB : 보드 (아침, 점심 저녁)
country ISO에서 규정한 ISO 3166-1 국가코드 표준 형식으로 표기
market_segment
TA : 여행사
TO : 관광업자
distribution_channel
예약 배포 채널
TA : 여행사
TO : 관광업자
변수 살펴보기
변수명 변수 설명
is_repeated_guest 예약 이름이 반복 손님의 이름인지 (1) 아닌지 (0) 나타내는
previous_cancellations 현재 예약 이전에 고객이 취소 이전 예약
previous_bookings_
not_canceled
현재 예약 이전에 고객이 취소하지 않은 이전 예약
reserved_room_type 예약된 객실 유형의 코드
assigned_room_type
예약에 지정된 객실 유형 코드. 호텔 운영상의 이유( : 초과 예약) 또는 고객
청으로 인해
지정된 객실 유형이 예약 객실 유형과 다를 있음
booking_changes
PMS 예약을 입력 순간부터 체크인 또는 취소까지 예약에 대한 변경 / 수정
횟수
deposit_type
고객이 예약을 보장하기 위해 보증금을 지불했는지 표시,
No Deposit : 보증금 없음 ,
Non Refund : 체류 기간에 대한 가치 == 보증금, 환불 불가,
Refundable : 체류 기간에 대한 가치 > 보증금 , 환불 가능
agent 예약을 하거나 예약 요금을 지불한 회사
company 예약 또는 지불 책임이 있는 회사/법인
변수 살펴보기
변수명 변수 설명
days_in_waiting_list 예약이 고객에게 확인되기 대기 목록에 있었던
customer_type
Transient : 그외 채널로 호텔 객실을 예약하는 개별 고객,
Contract : 항공사 크루나 장기 투숙고객 ,
Transient-Party : 써드파티 채널을 통해 호텔 객실을 예약하는 개별 고객,
Group : 보통 10 이상의 객실을 한꺼번에 이용하는 고객
adr 모든 숙박 거래의 총계를 숙박 일수로 나누어 정의한 평균 일일 요금
required_car_parking_spaces
고객이 요구 주차 공간
total_of_special_requests 고객이 요청한 특별 요구사항 ( : 트윈 베드 또는 고층)
reservation_status
다음 가지 범주 하나를 가정하여 예약 마지막 상태,
Canceled : 예약 취소,
Check-Out : 고객이 체크인했지만 이미 출발함,
No-Show : 고객은 체크인을 하지 않고 호텔에 이유를 알림
reservation_status_date
마지막 상태가 설정된 날짜,
변수는 ReservationStatus 함께 사용하여 예약이 언제 취소되었는지
또는
고객이 호텔을 체크 아웃했는지를 있음
데이터 살펴보기
과거 이력 시간 관련 세대 구성 예약 옵션 예약 채널
is_repeated_guest lead_time adults meal market_segment country
previous_cancellation
s
arrival_date_year children
reserved_room_type
distribution_channel
adr
previous_bookings_n
ot_canceled
arrival_date_month babies
assigned_room_type
agent
booking_changes
arrival_date_week_nu
mber
deposit_type company
reservation_status
arrival_date_day_of_
month
customer_type
reservation_status_d
ate
stays_in_weekend_ni
ghts
required_car_parking
_spaces
stays_in_week_nights
total_of_special_requ
ests
days_in_waiting_list
목표 변수 cancled hotel 변수를 제외한 변수 그룹
데이터 준비하기
데이터 준비하기
시티 호텔이 리조트호텔보다 예약
0%, 취소 0% 많음
리조트 호텔
데이터 살펴보기
시티 호텔
현재 상황 파악하기
리조트 호텔의 취소 비중이 매년 0% 상승
시티 호텔의 취소 비중이 40% 대로 높음
데이터 살펴보기
현재 상황 파악하기
리조트 호텔
가장 높은 : 8
가장 낮은 : 1
시티 호텔
가장 높은 : 4
가장 낮은 : 11
데이터 살펴보기
현재 상황 파악하기
주로 박을 묵는가.. 변경
리조트 호텔
평일 1, 주말 포함 5
숙박 순으로 높음
시티 호텔
주말 포함 1 숙박
데이터 살펴보기
리조트 호텔
가장 높은 요일 :
가장 낮은 요일 :
시티 호텔
가장 높은 요일 :
가장 낮은 요일 :
데이터 살펴보기
예약/취소별 adr
리조트 호텔 시티 호텔
시티 호텔이 리조트 호텔보다 일일 수익이 높음
데이터 살펴보기
세대에 따른 예약 취소 수와 비율
95% 이상이 성인 2 숙박에 해당
데이터 살펴보기
데이터 살펴보기
예약을 자주 변경할 수록 취소율이 낮아질까?
데이터 살펴보기
이전에 취소한 경험이 있다면 취소를 하게 될까?
리조트 호텔
예약 40
경과 취소율 상승
시티 호텔
예약 70
경과 취소율 상승
예약 숙박까지의 기간이 수록 취소율이 올라갈까?
데이터 살펴보기
월별 adr
시티 호텔은 리조트 호텔보다 월별 수익 편차가 적음
데이터 살펴보기
호텔 요청 사항에 따른 예약 취소
주차 공간을 요구한 고객의 취소 수가 없음
데이터 살펴보기
호텔 요청 사항에 따른 예약 취소
리조트 호텔 시티 호텔
요청 사항이 많을 수록 취소율이 낮아짐
데이터 살펴보기
나라별 예약/취소
호텔이 위치한 포르투갈의 숙박객이 가장 많음
데이터 살펴보기
예약 타입에 따른 예약/취소 비율
단체 고객에 의한 예약 취소 비중이 가장 높음
데이터 살펴보기
상관 분석
상관 관계 0.7 이상 제외
리조트 호텔 시티 호텔
데이터 살펴보기
Chi-square 분석
리조트 호텔 시티 호텔
귀무 가설을 기각하므로 컬럼 사용
데이터 살펴보기
범주형 변수의 상관 관계 검증
T - test
리조트 호텔 시티 호텔
Stays_in_weekend_nights 컬럼 제외
데이터 살펴보기
수치형 변수의 상관 관계 검증
리조트 호텔 시티 호텔
PCA 1, 2, 3, 4 성분 사용
PCA
데이터 살펴보기
머신러닝 기법 적용하기
Decision Tree
의사결정나무는 분류 분석 기법 하나
사용 알고리즘 :
머신러닝 기법 적용하기
랜덤포레스트란? 의사결정나무의 앙상블
Random Forest
02
호텔 취소에 영향을
치는 요소는 무엇인가?
리조트 호텔 시티 호텔
변수 중요도 살펴보기
Lead time, Country, Adr, Agent
Deposit type, Country, Lead time, Special requests
03
호텔 취소,
대안을 도출하자!
대안 도출
공통
- Lead Time: 예약은 체크인 날짜 90 부터 오픈
- Country: 포르투갈 손님들은 취소율이 높기 때문에 오버부킹을 받아 취소에 따른 손실을 최소화 한다
Resort Hotel
- ADR: 다양한 패키지 프로모션 제공, 지역 관광 행사 홍보등을 통해 취소율을 낮춰 ADR 증가
- Agent:
City Hotel
- Deposit Type: Non Refund 타입의 경우 취소만 있기 때문에 Deposit 높이거나 deposit type 제거하거나 변경한다
- Special Requests: 요구가 많을 수록 취소율이 낮기 때문에 손님들에게 매력적인 Special Requests 기획 제공